package headfirst.factory.abstractFactory.factory;

import headfirst.factory.abstractFactory.pizzaIngredient.Cheese.Cheese;
import headfirst.factory.abstractFactory.pizzaIngredient.Cheese.MozzarellaCheese;
import headfirst.factory.abstractFactory.pizzaIngredient.Clams.Clams;
import headfirst.factory.abstractFactory.pizzaIngredient.Clams.FrozenClams;
import headfirst.factory.abstractFactory.pizzaIngredient.Dough.Dough;
import headfirst.factory.abstractFactory.pizzaIngredient.Dough.ThickCrustDough;
import headfirst.factory.abstractFactory.pizzaIngredient.Pepperoni.Pepperoni;
import headfirst.factory.abstractFactory.pizzaIngredient.Pepperoni.SlicedPepperoni;
import headfirst.factory.abstractFactory.pizzaIngredient.Sauce.PlumTomatoSauce;
import headfirst.factory.abstractFactory.pizzaIngredient.Sauce.Sauce;
import headfirst.factory.abstractFactory.pizzaIngredient.Veggies.BlackOlives;
import headfirst.factory.abstractFactory.pizzaIngredient.Veggies.Eggplant;
import headfirst.factory.abstractFactory.pizzaIngredient.Veggies.Spinach;
import headfirst.factory.abstractFactory.pizzaIngredient.Veggies.Veggies;


/**
 * @author lixiaolong
 */
public class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory {
    @Override
    public Dough createDough() {
        return new ThickCrustDough();
    }

    @Override
    public Sauce createSauce() {
        return new PlumTomatoSauce();
    }

    @Override
    public Cheese createCheese() {
        return new MozzarellaCheese();
    }

    @Override
    public Veggies[] createVeggies() {
        Veggies[] veggies = {
                new BlackOlives(),
                new Spinach(),
                new Eggplant()
        };

        return veggies;
    }

    @Override
    public Pepperoni createPepperoni() {
        return new SlicedPepperoni();
    }

    @Override
    public Clams createClam() {
        return new FrozenClams();
    }
}
